package jk.zmn.sorm.utils;

import java.lang.reflect.Method;

/**
 * @author 张梦楠
 * @简书：https://www.jianshu.com/u/d611be10d1a6
 * @码云：https://gitee.com/zhangqiye/events
 * @Date: 2018/6/15
 *
 * 用于反射相关的操作
 *
 **/
public class ReflectUtils {


    /**
    *  通过反射调用某个实体类的属性的get方法
    * @date 2018/6/15 20:09
    * @param object
    * @param feildName
    * @return java.lang.Object
    */
    public static Object invokeGet(Object object,String feildName){
        try {
            Class<?> aClass = object.getClass();
            Method method = aClass.getMethod("get" + StringUtils.UpFirstString(feildName), null);
            return method.invoke(object, null);
        } catch (Exception e) {
            e.printStackTrace();
            return null;
        }
    }


    /**
    * 通过反射调用属性的set方法设值
    * @date 2018/6/15 21:31
    * @param object
    * @param columnLabel
    * @param columnValue
    * @return java.lang.Object
    */
    public static Object invokeSet(Object object,String columnLabel,Object columnValue){
        try {
            if (columnValue!=null) {
                Class<?> clazz = object.getClass();
                //clazz.getSuperclass().getMethod("set" + StringUtils.UpFirstString(columnLabel), columnValue.getClass());
                Method method = clazz.getMethod("set" + StringUtils.UpFirstString(columnLabel), columnValue.getClass());
                return method.invoke(object, columnValue);
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }



}
